C语言 我想问的是p-a[0]是什么意思?

来源:百度知道 编辑:UC知道 时间:2024/05/26 16:23:27
#include <stdio.h>
void main()
{ int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int *p;
for(p=a;p<a[0]+12;p++)
{ if((p-a[0])%4==0)printf("\n");
printf("%4d",*p);
}
printf("\n");
printf("%d",p+1);
printf("%d",a);

getch();
}

程序定义了一个3行4列的二维数组a,p是指向数组首地址的指针,里面方数组首地址,a[0]是第0行的地址,二维数组不是可以看作元素都是一维数组的一位数组么,所以a[0]也是数组元素a[0][0]的地址,p-a[0] 就是看p所指向的数组元素的地址跟a[0][0] 的位移,12的地址正好是p+11,for循环就是把这个数组 按3*4矩阵输出,每输出3个就换行

地址相减